import App from './App';
import store from './store';

// #ifndef VUE3

import auth from '@/services/auth.js';
import Vue from 'vue';
import './uni.promisify.adaptor';
// 引入 uView
import uView from '@/uni_modules/uview-ui';
Vue.use(uView)
Vue.config.productionTip = false
App.mpType = 'app'
Vue.use(auth, app)

const vconsole = require('vconsole')
Vue.prototype.$vconsole = new vconsole() // 使用vconsole


// 调用setConfig方法，方法内部会进行对象属性深度合并，可以放心嵌套配置
// 需要在Vue.use(uView)之后执行
uni.$u.setConfig({
	// 修改$u.config对象的属性
	config: {
		// 修改默认单位为rpx，相当于执行 uni.$u.config.unit = 'rpx'
		unit: 'rpx',
	},
	// 修改$u.props对象的属性
	props: {
		// 修改radio组件的size参数的默认值，相当于执行 uni.$u.props.radio.size = 30
		radio: {
			size: 15
		},
		// 其他组件属性配置
		// ......
	}
})


try {
	function isPromise(obj) {
		return (
			!!obj &&
			(typeof obj === 'object' || typeof obj === 'function') &&
			typeof obj.then === 'function'
		)
	}

	// 统一 vue2 API Promise 化返回格式与 vue3 保持一致
	uni.addInterceptor({
		returnValue(res) {
			if (!isPromise(res)) {
				return res
			}
			return new Promise((resolve, reject) => {
				res.then(res => {
					if (res[0]) {
						reject(res[0])
					} else {
						resolve(res[1])
					}
				})
			})
		},
	})
} catch (error) {}


const app = new Vue({
	...App,
	store
})
app.$mount()

// #endif



// #ifdef VUE3
import {
	createSSRApp
} from 'vue';
export function createApp() {
	const app = createSSRApp(App)
	return {
		app
	}
}
// #endif